home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1997-03-10 | 6.1 KB | 265 lines |
- 10 'HAMDEX - 18 FEB 94 rev. 22 FEB 97
- 20 EX$="hamdex"
- 30 COMMON EX$
- 40 CLS:KEY OFF
- 50 ON ERROR GOTO 330
- 60 COLOR 7,0,1
- 70 DIM A$(512,4),F$(50,4)
- 80 MN$="HAMCALC INDEX" 'Parent Index name
- 90 M$="HAMDEX" 'this program name
- 100 N$="\data\index\"+M$+".fil" 'data filename
- 110 UL$=STRING$(80,205)
- 120 '
- 130 '.....load file
- 140 OPEN "I",1,N$
- 150 N=0
- 160 IF EOF(1)THEN 200
- 170 N=N+1:FOR Y=1 TO 4
- 180 INPUT# 1,A$(N,Y):NEXT Y
- 190 GOTO 160
- 200 CLOSE
- 210 '
- 220 '.....start
- 230 CLS
- 240 COLOR 15,2:PRINT STRING$(80,32);
- 250 LOCATE CSRLIN-1,23:PRINT "A L P H A B E T I C A L I N D E X"
- 260 COLOR 1,0:PRINT STRING$(80,223);
- 270 COLOR 7,0
- 280 LOCATE 15,36
- 290 GOSUB 2430 'preface
- 300 GOSUB 2170 'start a page
- 310 GOTO 940
- 320 '
- 330 BEEP:CLS
- 340 PRINT "Error";ERR;"in line";ERL:END
- 350 '
- 360 '.....main menu
- 370 CLS
- 380 PRINT MN$
- 390 PRINT UL$;
- 400 PRINT "Press letter in ( ) to:"
- 410 PRINT UL$;
- 420 PRINT " (a) ADD a listing to the Index"
- 430 PRINT " (b) LOOK UP an Index listing"
- 440 PRINT " (c) DISPLAY/PRINT Index"
- 450 PRINT " (d) Return to Main Menu"
- 460 Z$=INKEY$
- 470 IF Z$="a"THEN CLS:GOTO 880
- 480 IF Z$="b"THEN CLS:GOTO 1200
- 490 IF Z$="c"THEN CLS:GOTO 940
- 500 IF Z$="d"THEN CLS:CHAIN EX$
- 510 GOTO 460
- 520 '
- 530 '.....save data
- 540 CLS
- 550 LOCATE 12,22:PRINT ".......... S O R T I N G .........."
- 560 OPEN "O",1,"\data\index\TEMPORY.fil"
- 570 FOR Z=1 TO N
- 580 WRITE# 1,A$(Z,1),A$(Z,2),A$(Z,3),A$(Z,4)
- 590 NEXT Z
- 600 CLOSE
- 610 SF$="sort < \data\index\TEMPORY.fil"+" > "+N$
- 620 SHELL SF$
- 630 KILL"\data\index\TEMPORY.fil"
- 640 CLS:GOTO 130
- 650 '
- 660 '.....convert to upper case
- 670 FOR U=1 TO LEN(I$):V=ASC(MID$(I$,U,1)):IF V=44 THEN RETURN
- 680 IF V>96 AND V<123 THEN MID$(I$,U,1)=CHR$(V-32)
- 690 NEXT U:RETURN
- 700 '
- 710 '.....inputs
- 720 LINE INPUT "ENTER Word or Heading..............? ";I$:GOSUB 660
- 730 RETURN
- 740 '
- 750 LINE INPUT "ENTER Subheading...................? ";I$
- 760 IF I$=""THEN 780
- 770 I$=", "+I$
- 780 RETURN
- 790 '
- 800 LINE INPUT "ENTER Supplementary note, if any...? ";I$
- 810 IF I$=""THEN 830
- 820 I$=", "+I$
- 830 RETURN
- 840 '
- 850 LINE INPUT "ENTER Program Filename............ ? ";I$:GOSUB 660
- 860 RETURN
- 870 '
- 880 '.....new listing
- 890 N=N+1
- 900 PRINT "NEW LISTING":PRINT
- 910 FOR Z=1 TO 4:ON Z GOSUB 720,750,800,850:A$(N,Z)=I$
- 920 NEXT Z:CLS:Z=N:GOTO 1730
- 930 '
- 940 '.....screen display
- 950 CLS
- 960 IF Z<>0 THEN A=Z+1 ELSE A=1
- 970 LN=0:C=0 'line number,counter
- 980 FOR Z=A TO N
- 990 LN=LN+1:C=C+1
- 1000 IF Z=1 THEN 1010
- 1010 Z$=CHR$(C+96)
- 1020 IF Z<1 THEN Z=1
- 1030 F$(C,1)=A$(Z,4)
- 1040 PRINT " <";Z$;"> ";
- 1050 COLOR 12,0:PRINT A$(Z,1);
- 1060 COLOR 7,0:PRINT A$(Z,2);A$(Z,3);
- 1070 IF LN<24 THEN PRINT "":GOTO 1100
- 1080 GOSUB 1970 'command line
- 1090 CLS:LN=0:C=0 'clear screen
- 1100 NEXT Z
- 1110 GOSUB 1970 'command line
- 1120 GOTO 940
- 1130 '
- 1140 '.....return to menu
- 1150 BEEP:PRINT:PRINT "There is nothing starting with ";I$;" on file......"
- 1160 PRINT:PRINT "Press SPACE BAR to return to Menu
- 1170 Z$=INKEY$:IF Z$=" "THEN CLS:GOTO 400
- 1180 GOTO 1170
- 1190 '
- 1200 '.....search
- 1210 INPUT "ENTER first 1 or 2 letters of word";I$:GOSUB 660
- 1220 L=LEN(I$):F=0
- 1230 FOR Z=1 TO N
- 1240 IF LEFT$(A$(Z,1),L)<>I$ THEN 1270
- 1250 F=F+1:F$(F,1)=A$(Z,1)+A$(Z,2)+A$(Z,3):F$(F,2)=STR$(Z):F$(F,3)=A$(Z,4)
- 1260 F$(F,4)=STR$(Z)
- 1270 NEXT Z
- 1280 IF F=0 THEN 1140
- 1290 CLS':IF F<=22 THEN 1170
- 1300 IF F=1 THEN Z=VAL(F$(F,2)):GOTO 1480
- 1310 ROW=0 'screen row number
- 1320 FOR Z=1 TO F
- 1330 ROW=ROW+1
- 1340 IF ROW<25 THEN 1390
- 1350 COLOR 0,7
- 1360 LOCATE 25,20:PRINT "......press any key for more......";
- 1370 COLOR 7,0
- 1380 IF INKEY$=""THEN 1380 ELSE ROW=0:CLS
- 1390 IF Z<10 THEN PRINT " ";
- 1400 PRINT Z;" ";F$(Z,1);
- 1410 IF ROW<24 THEN PRINT ""
- 1420 NEXT Z
- 1430 COLOR 0,7
- 1440 INPUT " ENTER item no. to select listing ";J
- 1450 COLOR 7,0
- 1460 Z=VAL(F$(J,4))
- 1470 CLS
- 1480 PRINT "You have just looked up ";:COLOR 0,7
- 1490 PRINT " ";:FOR Q=1 TO 3:PRINT A$(Z,Q);:NEXT Q:PRINT " "
- 1500 COLOR 7,0
- 1510 PRINT UL$;
- 1520 PRINT "Press number in ( ) to:"
- 1530 PRINT UL$;
- 1540 PRINT "(1) RUN program pertaining to this listing"
- 1550 PRINT "(2) EDIT Listing"
- 1560 PRINT "(3) DELETE Listing"
- 1570 PRINT "(4) Return to menu"
- 1580 Z$=INKEY$
- 1590 IF Z$="1"THEN CLS:X$=A$(Z,4):CHAIN X$
- 1600 IF Z$="2"THEN CLS:GOTO 1740
- 1610 IF Z$="3"THEN 1860
- 1620 IF Z$="4"THEN CLS:GOTO 400
- 1630 GOTO 1580
- 1640 '
- 1650 PRINT UL$;
- 1660 PRINT "Line 1: Main Heading..........";A$(Z,1)
- 1670 PRINT "Line 2: Sub-Heading...........";A$(Z,2)
- 1680 PRINT "Line 3: Supplementary note....";A$(Z,3)
- 1690 PRINT "Line 4: Program filename......";A$(Z,4)
- 1700 PRINT UL$;
- 1710 RETURN
- 1720 '
- 1730 '.....edit listing
- 1740 FOR Q=1 TO 3:PRINT A$(Z,Q);:NEXT Q:PRINT ""
- 1750 GOSUB 1650:PRINT "Press number in ( ) for next step:"
- 1760 PRINT UL$;
- 1770 FOR Y=1 TO 4:PRINT "(";Y;") Change Line";Y:NEXT Y
- 1780 PRINT "( 5 ) O.K. as is":PRINT
- 1790 Z$=INKEY$:Q=VAL(Z$):IF Q<1 OR Q>5 THEN 1850
- 1800 IF Z$="1"THEN GOSUB 720:A$(Z,1)=I$:CLS:GOSUB 1740
- 1810 IF Z$="2"THEN GOSUB 750:A$(Z,2)=I$:CLS:GOSUB 1740
- 1820 IF Z$="3"THEN GOSUB 800:A$(Z,3)=I$:CLS:GOSUB 1740
- 1830 IF Z$="4"THEN GOSUB 850:A$(Z,4)=I$:CLS:GOSUB 1740
- 1840 IF Z$="5"THEN CLS:GOTO 530 'sort and save
- 1850 GOTO 1790
- 1860 '
- 1870 '.....delete listing
- 1880 PRINT:PRINT "Are you sure you want this listing deleted ? (y/n)
- 1890 Z$=INKEY$
- 1900 IF Z$="n"THEN CLS:GOTO 1520
- 1910 IF Z$="y"THEN 1930
- 1920 GOTO 1890
- 1930 FOR X=Z TO N:LOCATE 1,40:PRINT N-X:FOR Y=1 TO 4
- 1940 A$(X,Y)=A$(X+1,Y):NEXT Y:NEXT X:N=N-1
- 1950 GOTO 530 'sort & save
- 1960 '
- 1970 '.....command line 25
- 1980 LOCATE 25,1:COLOR 15,1
- 1990 PRINT " < > RUN PROGRAM 1-NEXT PAGE 2-PREVIOUS PAGE ";
- 2000 PRINT "3-ANOTHER PAGE 4-EXIT ";
- 2010 COLOR 7,0
- 2020 Z$=INKEY$:IF Z$="" THEN 2020
- 2030 IF Z$="0"THEN 360
- 2040 IF (Z$="1") AND Z>=N THEN Z=0:GOTO 2150
- 2050 IF Z$="1" THEN 2150
- 2060 IF Z$="2" THEN Z=Z-48:GOTO 2150
- 2070 IF Z$="3" THEN CLS:GOTO 2170
- 2080 IF Z$="4"THEN CLS:RUN"\bas\menu\hcal"
- 2090 R=ASC(Z$)-96
- 2100 IF R+96<97 OR R>C THEN BEEP:GOTO 1970
- 2110 R$=F$(R,1)
- 2120 IF R$=M$ THEN ERASE A$,F$:GOTO 10
- 2130 CLS:CHAIN R$
- 2140 GOTO 2020
- 2150 RETURN
- 2160 '
- 2170 '.....find
- 2180 LOCATE 4,7:COLOR 14,4
- 2190 PRINT " PRESS A LETTER OR NUMBER AT WHICH YOU WANT";
- 2200 PRINT " AN INDEX PAGE TO BEGIN. "
- 2210 PRINT
- 2220 COLOR 7,0
- 2230 LOCATE ,37:PRINT " - or - "
- 2240 PRINT:COLOR 0,7
- 2250 LOCATE ,25:PRINT " Press 0 to return to main menu "
- 2260 COLOR 7,0
- 2270 PRINT
- 2280 PRINT UL$;
- 2290 I$=INKEY$:IF I$=""THEN 2290
- 2300 IF I$="0"THEN CLS:RUN"\bas\menu\hcal"
- 2310 IF ASC(I$)>=97 AND ASC(I$)<=122 THEN I$=CHR$(ASC(I$)-32)
- 2320 CLS
- 2330 FOR Y=1 TO N
- 2340 IF LEFT$(A$(Y,1),1)=I$ THEN Z=Y-1:RETURN
- 2350 NEXT Y
- 2360 CLS:LOCATE 20,18
- 2370 PRINT "There is nothing in the Index starting with ";
- 2380 COLOR 0,7:PRINT " ";I$;" ";:COLOR 7,0:PRINT"."
- 2390 LOCATE 22,18:PRINT "Press any key.........."
- 2400 IF INKEY$=""THEN 2400
- 2410 CLEAR:CLS:GOTO 10
- 2420 '
- 2430 '.....preface
- 2440 S=7:T=9
- 2450 PRINT TAB(S+1);
- 2460 PRINT "Each page has a prompt line to select one of the following options:"
- 2470 PRINT TAB(S);
- 2480 PRINT STRING$(68,196)
- 2490 PRINT TAB(T+7);"Prompt Option"
- 2500 PRINT TAB(S);
- 2510 PRINT STRING$(68,196)
- 2520 T=12
- 2530 PRINT TAB(T);
- 2540 PRINT "< > RUN PROGRAM Press any letter in < > to RUN a PROGRAM"
- 2550 PRINT TAB(T);
- 2560 PRINT " 1-NEXT PAGE Press 1 to display NEXT index page"
- 2570 PRINT TAB(T);
- 2580 PRINT " 2-PRECEDING PAGE Press 2 to display PRECEDING index page"
- 2590 PRINT TAB(T);
- 2600 PRINT " 3-ANOTHER PAGE Press 3 to display ANOTHER index page"
- 2610 PRINT TAB(T);
- 2620 PRINT " 4-EXIT Press 4 to EXIT";
- 2630 '
- 2640 RETURN
-